<?php

namespace app\api\controller;

use app\common\controller\Api;
use Orders\Entity\PushOrderBodyEntity;
use Orders\Entity\PushOrderHeaderEntity;
use Orders\Entity\PushOrderPublicEntity;
use Orders\Service\PushOrderService;
use think\Db;
/**
 * 示例接口
 */
class Demo extends Api
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['test', 'test1'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['test2'];

    /**
     * 测试方法
     *
     * @ApiTitle    (测试名称)
     * @ApiSummary  (测试描述信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/demo/test/id/{id}/name/{name})
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", required=true, description="会员ID")
     * @ApiParams   (name="name", type="string", required=true, description="用户名")
     * @ApiParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功'
        })
     */
    public function test()
    {
        $order = Db::name("customs_declaration")->where("orderNo","20240429060511000000039584")->find();
        
        $publicData = new PushOrderPublicEntity([]);
        $headerData = new PushOrderHeaderEntity($order);
        
        $shop_order_goods = Db::name('shop_order_goods')->where('order_sn',$order['orderNo'])->select();

        $data = [['id'=>1],['id'=>2]];
        $bodydata = [];
        foreach ($shop_order_goods as $key => $value) {
            $shop = Db::name('shop_goods')->where('id',$value['goods_id'])->find();
            $brand = Db::name('shop_brand')->where('id',$shop['brand_id'])->value('name');
            $sku = Db::name('shop_sku_template')->where('id',$value['goods_sku_id'])->value('spec_values');
            $param = [
                'itemNo'        =>  $value['goods_sn'],
                'itemName'      =>  $value['title'],
                'gcode'         =>  $shop['gcode'],
                'brand'         =>  $brand,
                'gmodel'        =>  $sku,
                'qty'           =>  $value['nums'],
                'unitCus'       =>  $shop['unitCus'],
                'unitCiq'       =>  $shop['unitCiq'],
                'qty1'          =>  $shop['qty1'],
                'Qty2'          =>  $shop['Qty2'],
                'unitCus1'      =>  $shop['unitCus1'],
                'unitCus2'      =>  $shop['unitCus2'],
                'price'         =>  intval($value['price']/$value['nums']),
                'totalPrice'    =>  $value['price'],
                'country'       =>  $shop['country'],
                'usage'         =>  $shop['usage']
            ];
            // echo '<pre>';
            // print_r($param);
            // die();
            $obj   = new PushOrderBodyEntity($param);
            $bodydata[] = $obj->getAllAttributes();
        }
        $obj = new PushOrderService();
        $data = $obj->push($publicData, $headerData, $bodydata);
        if(intval($data['status']) == 1){
            $this->success('返回成功', $data);
        }
        $this->error($data['detail']);
        
    }

    /**
     * 无需登录的接口
     *
     */
    public function test1()
    {
        $this->success('返回成功', ['action' => 'test1']);
    }

    /**
     * 需要登录的接口
     *
     */
    public function test2()
    {
        $this->success('返回成功', ['action' => 'test2']);
    }

    /**
     * 需要登录且需要验证有相应组的权限
     *
     */
    public function test3()
    {
        $this->success('返回成功', ['action' => 'test3']);
    }

}
